package com.soxing.braindata.domain.stat;

import lombok.Data;
import lombok.SneakyThrows;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;

@Data
public class CollectEntity implements Serializable {
    public static String name = "采集统计";
    public static String key = "COLLECT_BAR";

    private Map<String,Long> tempstat;
    private Map<String,Long> stat;
    public CollectEntity(List<Date> Slist)
    {
        ZoneId zoneId = ZoneId.systemDefault();
        this.tempstat =  Slist.stream().collect(Collectors.groupingBy(  x->{
             return x.toInstant().atZone(zoneId).toLocalDate().toString();
         },Collectors.counting()));
        stat = new TreeMap<>(new Comparator<Object>() {

            @SneakyThrows
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof String && o2 instanceof String) {
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                    Date sd1=df.parse((String) o1);
                    Date sd2=df.parse((String) o2);
                    return sd1.compareTo(sd2);
                }
                return 0;
            }

        });
        this.stat.putAll(tempstat);


    }



}
//
//@Data
//public class CollectEntity implements Serializable {
//    public static String name = "采集统计";
//    public static String key = "COLLECT_BAR";
//
//    private Map<Date,Long> tempstat;
//    private Map<Date,Long> stat;
//    public CollectEntity(List<Date> Slist)
//    {
//        ZoneId zoneId = ZoneId.systemDefault();
//        this.tempstat =  Slist.stream().collect(Collectors.groupingBy(  x->{
//            return x;
//        },Collectors.counting()));
//        stat = new TreeMap<>(new Comparator<Object>() {
//
//            @Override
//            public int compare(Object o1, Object o2) {
//                if(o1 instanceof Date && o2 instanceof Date) {
//                    return ((Date) o1).compareTo((Date)o2);
//                }
//                return 0;
//            }

//        });
//
//        this.stat.putAll(tempstat);
//        System.out.println(this.stat);
//
//
//
//    }
//
//
//
//}
